﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class BoxControlador
    {
        private static BoxControlador instance;
        Box b;

        public BoxControlador()
        {
            b = new Box();
        }

        public static BoxControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new BoxControlador();
                }

                return instance;
            }
        }

        public List<Box> buscarBox(int codigo)
        {
            List<Box> lista = new List<Box>();
            try
            {
                SqlCommand com = new SqlCommand();


                com.CommandText = "select * from BOX where NUMEROBOX='" + codigo + "'";
                com.Connection = Conexion.Instance.Con;

                SqlDataReader ejecuta = com.ExecuteReader();

                if (ejecuta.Read() == true)
                {
                    /*B
                    Conexion.Instance.Con.Close();
                    return b;*/
                    return lista;
                }
                else
                    return null;
                // }//resultado.Add((string)(ejecuta["ApellidoPaterno"]) + (string)(ejecuta["ApellidoPaterno"]) + "," + (string)(ejecuta["ApellidoPaterno"]));
                //}
                //return resultado;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return lista;
                throw;
            }
        }


        public bool IngresarBox(int Numero, string Especialidad, Boolean Disponibilidad)
        {
            return IngresarBox(Numero, Especialidad, Disponibilidad);
        }

        public bool ingresarBox(string Especialidad, Boolean Disponibilidad)
        {
            try
            {
                //SqlConnection con = new SqlConnection(Conexion.Instance.connectionString);
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "INSERT INTO BOX" +
                    "(ESPECIALIDADBOX, DISPONIBILIDADBOX,)" + "VALUES" +
                    "( @especialidad, @disponibilidad)";

                //com.Parameters.AddWithValue("@numero", Numero);
                com.Parameters.AddWithValue("@especialidad", Especialidad);
                com.Parameters.AddWithValue("@disponibilidad", Disponibilidad);


                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
        }

        public bool modificarBox(int Numero, string Especialidad, Boolean Disponibilidad)
        {
            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "UPDATE Box " +
                    "SET Numero = @numero, Especialidad = @especialidad, Disponibilidad = @disponibilidad" +
                    "WHERE Numero = @numero";

                com.Parameters.AddWithValue("@numero", Numero);
                com.Parameters.AddWithValue("@especialidad", Especialidad);
                com.Parameters.AddWithValue("@disponibilidad", Disponibilidad);


                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                // TODO terminar esto

                

                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                
                return false;
                throw;
            }
        }

        public Box buscarBoxes(int numero)
        {
            Box b = new Box();

            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "select * from BOX where NUMEROBOX='" + numero + "'";
                com.Connection = Conexion.Instance.Con;

                SqlDataReader ejecuta = com.ExecuteReader();

                if (ejecuta.Read() == true)
                {
                    b.NUMEROBOX = ejecuta.GetInt16(0);
                    b.Especialidad = ejecuta.GetString(1);
                    b.BOXDISPONIBLE = ejecuta.GetBoolean(2);
                    //b.Especialidad = ((string)(ejecuta["ESPECIALIDADBOX"])).Trim();
                    //b.Disponibilidad = ((Boolean)(ejecuta["DISPONIBILIDADBOX"]));//aqui pero este es por no reconocer la variable.
                    
                }
                else
                {
                    b = null;
                }
                Conexion.Instance.Con.Close();
                return b;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return null;
                throw;
            }
        }
    }
}